package com.gonsin.gview.annotations.data;

import com.gonsin.gview.annotations.impl.EmptyListDataPicker;
import com.gonsin.gview.annotations.interfaces.IListDataPicker;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * item为基本数据类型的列表
 */
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface GSimpleListData {

    /**
     * 是否启用
     */
    boolean enable() default true;

    /**
     * 自定义dataId，如果没有自定义则会自动生成一个随机字符串作为dataId
     */
    String dataId() default "";

    /**
     * 直接输入sql语句查询数据（如果查询到多个，则会返回第一个）
     */
    String fromSql() default "";

    /**
     * 通过dataPicker写java语句查询数据（此方法最为灵活）
     */
    Class<? extends IListDataPicker> fromListDataPicker() default EmptyListDataPicker.class;

    /**
     * 通过dataPicker写java语句查询数据（此方法最为灵活）
     */
    String fromListDataPickerClassName() default "";

    /**
     * @deprecated 尽量别用
     * 通过静态json返回，适合静态数据
     */
    String fromJson() default "";

    /**
     * 通过@GDataSource获取数据
     */
    String fromDataSource() default "";

    /**
     * 查询所得，key的名字,可以对应的字段必须是唯一
     */
    String keyName() default "key";

    /**
     * 查询所得，value的名字，
     */
    String valueName() default "value";

}
